const path = require('path')
const userManage = require(path.join(__dirname, '../models/back_manage/user.js'))
const jwToken = require('jsonwebtoken')
const secret = 'xzw'

const queryToken = (req, res, next) => {
  const bearerHeader = req.headers.token
  if (typeof bearerHeader !== 'undefined') {
    req.token = bearerHeader
    next()
  } else {
    next(['请先登录', '99997'])
  }
}

function verifyToken(request, response, next) {
  jwToken.verify(request.token, secret, (err, decodeToken) => {
    if (!err) {
      //token正确，做些事情
      userManage
        .findOne({ _id: decodeToken._id })
        .then(value => {
          // 通过token解析出来的id查询出确有其人，还要判断此人的token是否被清空（退出登录清空用户的token）
          if (value && request.token === value.token) {
            next()
          } else {
            // token为空失效
            next(['token失效', NOLOGIN])
          }
        })
        .catch(() => {
          next(['数据库查询出错'])
        })
    } else {
      //没有token或者是token过期失效，返回401
      next(['青重新登录', NOLOGIN])
    }
  })
}

module.exports = {
  verifyToken,
  queryToken
} 
